home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
MYMUD21.ZIP
/
MMUD21.ZIP
/
SOURCE
/
SOURCE.ZIP
/
PACK_DAT.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-01-21
|
2KB
|
94 lines
Program PackMud;
Uses Dos,Header,Misc;
Var Inp : File of ObjRecord;
Dat : File;
Out : File;
Rec : ObjRecord;
MudName : ComStr;
DatSize : LongInt;
Nr : Word;
Txt : TextRecord;
Procedure CopyLong(Var L : LongRec);
Var F : File;
RR : Word;
Begin
If (Integer(L.Length)=-1) Or (L.Start>DatSize)
Then Begin
FillChar(L,SizeOf(L),#00);
Exit;
End;
Assign(F,MudName+'.ODT');
Reset(F,1);
Seek(F,L.Start);
BlockRead(F,Txt,L.Length,RR);
Close(F);
If RR<>L.Length
Then Begin
FillChar(L,SizeOf(L),#00);
Exit;
End;
Assign(F,Mudname+'.DAT');
Reset(F,1);
If IoResult<>0
Then Rewrite(F,1);
Seek(F,FileSize(F));
L.Start:=FilePos(F);
BlockWrite(F,Txt,RR,RR);
Close(F);
If RR<>L.Length
Then Begin
FillChar(L,SizeOf(L),#00);
Exit;
End;
End;
Begin
MudName:=ParamStr(1);
Assign(Inp,MudName+'.IDX');
Reset(Inp);
If IoResult<>0
Then Halt;
Assign(Out,MudName+'.DAT');
Rename(Out,MudName+'.ODT');
Reset(Out,1);
DatSize:=FileSize(Out);
Close(Out);
If IoResult<>0
Then Begin
Close(Inp);
Halt;
End;
Nr:=0;
While Not Eof(Inp) Do
Begin
Read(Inp,Rec);
Inc(Nr);
With rec Do
Begin
Write(#13,Rec.Name);
If Success.Length >0 Then CopyLong(Success) Else Success.Start :=0;
If Fail.Length >0 Then CopyLong(Fail) Else Fail.Start :=0;
If OSuccess.Length >0 Then CopyLong(OSuccess) Else Osuccess.Start:=0;
If OFail.Length >0 Then CopyLong(OFail) Else OFail.Start :=0;
If Desc.Length >0 Then CopyLong(Desc) Else Desc.Start :=0;
If Finger.Length >0 Then CopyLong(Finger) Else Finger.Start :=0;
If Macro.Length >0 Then CopyLong(Macro) Else Macro.Start :=0;
End;
Seek(Inp,Nr-1);
Write(Inp,Rec);
End;
WriteLn;
Close(Inp);
End.